//
//  YTKRequestExtension.h
//  YTKNetworkExtension
//
//  Created by Jarvis on 2024/5/28.
//

#import <YTKNetwork/YTKNetwork.h>

NS_ASSUME_NONNULL_BEGIN

@interface YTKRequestExtension : YTKRequest

@property (nonatomic, copy  ) dispatch_block_t requestCompletePreprocessorBlock;
@property (nonatomic, copy  ) dispatch_block_t requestCompleteFilterBlock;
@property (nonatomic, copy  ) dispatch_block_t requestFailedPreprocessorBlock;
@property (nonatomic, copy  ) dispatch_block_t requestFailedFilterBlock;

@property (nonatomic, copy  ) NSString *baseUrl;
@property (nonatomic, copy  ) NSString *requestUrl;
@property (nonatomic, copy  ) NSString *cdnUrl;
@property (nonatomic, assign) NSTimeInterval requestTimeoutInterval;
@property (nonatomic, copy  ) id(^cacheFileNameFilterForRequestArgumentBlock)(id);
@property (nonatomic, strong, nullable) id requestArgument;
@property (nonatomic, assign) YTKRequestMethod requestMethod;
@property (nonatomic, assign) YTKRequestSerializerType requestSerializerType;
@property (nonatomic, assign) YTKResponseSerializerType responseSerializerType;
@property (nonatomic, copy, nullable) NSArray<NSString *> *requestAuthorizationHeaderFieldArray;
@property (nonatomic, copy, nullable) NSDictionary<NSString *, NSString *> *requestHeaderFieldValueDictionary;
@property (nonatomic, copy, nullable) NSURLRequest *buildCustomUrlRequest;
@property (nonatomic, assign) BOOL useCDN;
@property (nonatomic, assign) BOOL allowsCellularAccess;
@property (nonatomic, copy, nullable) id jsonValidator;
@property (nonatomic, assign, readonly) BOOL statusCodeValidator;
@property (nonatomic, assign) NSInteger cacheTimeInSeconds;
@property (nonatomic, assign) long long cacheVersion;
@property (nonatomic, copy, nullable) id cacheSensitiveData;
@property (nonatomic, assign) BOOL writeCacheAsynchronously;


//@property (nonatomic, assign) NSInteger requestRetryCount;
//@property (nonatomic, strong, nullable) id mock;

@end

NS_ASSUME_NONNULL_END
